package tech.heptagram.staff.api.v3;

import java.util.List;

import tech.heptagram.core.common.rest.ResponseResult;
import tech.heptagram.staff.model.ProcessRecord;
import tech.heptagram.staff.query.ProcessRecordQuery;
import tech.heptagram.staff.query.RejectMsgReq;

public interface ProcessRecordApi {
    /**
     * 添加审批记录信息
     *
     * @param vo 审批记录
     */
    ResponseResult save(ProcessRecord vo);

    /**
     * 修改申请状态到成功
     *
     * @param vo 审批记录
     */
    ResponseResult updateStateToStart(ProcessRecord vo);

    /**
     * 修改申请状态到撤销
     *
     * @param vo 审批记录
     */
    ResponseResult updateStateToTerminate(ProcessRecord vo);

    /**
     * 修改申请状态道结束
     *
     * @param vo 审批记录
     */
    ResponseResult updateStateToFinish(ProcessRecord vo);

    /**
     * 修改申请拒绝消息
     * @param rejectMsg 消息
     * @return
     */
    ResponseResult updateRejectMessage(RejectMsgReq rejectMsg);

    /**
     * 通过指定条件查询审批记录信息
     *
     * @param vo 审批记录
     * @return
     */
    ResponseResult<ProcessRecord> findByBpmsProcessId(ProcessRecord vo);

    /**
     * 查询员工对某一种类的申请在某种状态的信息
     *
     * @return
     */
    ResponseResult<List<ProcessRecord>> findByUserProcessTypeAndState(ProcessRecordQuery processRecord);
}
